import { RouteMeta } from 'vue-router'

/**
 * 任意对象类型
 */
export interface ICommonObj {
  [key: string]: any;
}

/**
 * 树型结构类型
 */
export interface ITreeItem extends ICommonObj {
  children?: ITreeItem[];
}

/**
 * WebSocket消息格式
 */
export interface IWebSocketMessage {
  id: string;
  timestamp: number;
  version: number;
  tag: string;
  payload: object;
}

/**
 * 文件记录
 */
export interface IFileRecord {
  id: number;
  name: string;
  md5: string;
  path: string;
  url: string;
}

/**
 * 文件路径
 */
export interface IFileUrl {
  id: number;
  name: string;
  url: string;
}

/**
 * 文件块信息
 */
export interface IChunkInfo {
  chunkNumber: number;
  filename: string;
}

/**
 * 调用Api格式
 */
export type IHandleApi = 'ADD' | 'UPDATE' | 'DELETE'

/**
 * 饼图数据
 */
export interface IPieChartData {
  name: string;
  value: string | number;
}

/**
 * x/y轴数据
 */
export type IAxisData = number[] | string[]

/**
 * 雷达图指示器
 */
export interface IRadarChartIndicator {
  name: string;
  min: number;
  max: number;
}

/**
 * 登录表单
 */
export interface ILoginForm {
  username: string;
  password: string;
  isRemember: boolean;
}

/**
 * 对话框
 */
export interface IDialog<T> {
  /**
   * 是否打开
   */
  visible: boolean;
  /**
   * 对话框标题
   */
  title: string;
  /**
   * 对话框数据
   */
  data: T;
}

/**
 * 路由meta配置
 */
export interface IRouteMetaConfig {
  [key: string]: RouteMeta;
}

/**
 * 统计图表
 */
export interface IStatsChart {
  name: string;
  value: number;
}

/**
 * 展示数据形式
 */
export type IShowData = 'DATA' | 'CHART'

/**
 * 上传文件
 */
export interface IUploadFile {
  id: number;
  name: string;
  url: string;
}

export interface ILunarDate {
  /**
   * 生肖属相
   */
  zodiac: string;
  /**
   * 干支纪年
   */
  GanZhiYear: string;
  /**
   * 干支纪月
   */
  GanZhiMonth: string;
  /**
   * 干支纪日
   */
  GanZhiDay: string;
  /**
   * 0无特殊安排，1工作，2放假
   */
  worktime: number;
  /**
   * 农历年
   */
  lunarYear: number;
  /**
   * 农历月（1-13，有闰月情况，比如当前闰9月，10表示闰9月，11表示10月）
   */
  lunarMonth: number;
  /**
   * 农历日
   */
  lunarDay: number;
  /**
   * 农历月中文名
   */
  lunarMonthName: string;
  /**
   * 农历日中文名
   */
  lunarDayName: string;
  /**
   * 农历闰月所在月份，0表示无闰月
   */
  lunarLeapMonth: number;
  /**
   * 公历节假日 劳动节等
   */
  solarFestival: string | undefined;
  /**
   * 农历节假日 除夕等
   */
  lunarFestival: string | undefined;
  /**
   * 二十四节气名
   */
  term: string | undefined;
}

